package V1;

import static org.junit.Assert.*;

import javax.swing.JButton;
import javax.swing.JTextField;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import Commands.CmdMarquerMesure;
import Commands.CmdMarquerTemps;
import Commands.Command;
import IHM.Afficheur;
import IHM.AfficheurImpl;
import IHM.LED;
import Metronome.Controler;
import Metronome.ControlerImpl;
import Metronome.MoteurMetronome;
import Metronome.MoteurMetronomeImpl;

public class AfficheurImplTest {


	private LED ledMesure;
	private JButton start, stop;
	
	private Afficheur afficheur;
	private Controler controler;
	private MoteurMetronome moteur;
	private Command cmdMarquerTemps, cmdMarquerMesure;
	private JTextField affichageTempo, affichageMesure;
	private String imageOn = "img/on.jpg";
	private String imageOff = "img/off.jpg";
	
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		cmdMarquerTemps = new CmdMarquerTemps(controler);
		cmdMarquerMesure = new CmdMarquerMesure(controler) ;

		ledMesure = new LED();
		afficheur = new AfficheurImpl();
		moteur = new MoteurMetronomeImpl(cmdMarquerTemps, cmdMarquerMesure);
		controler = new ControlerImpl(moteur,afficheur);
		affichageTempo = new JTextField();
		affichageMesure = new JTextField();
		start = new JButton();
		stop = new JButton();
		
		afficheur.setAffichageMesure(affichageMesure);
		afficheur.setAffichageTempo(affichageTempo);
		afficheur.setLEDMesure(ledMesure);
		afficheur.setStart(start);
		afficheur.setStop(stop);
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testAfficherTempo() {
		afficheur.afficherTempo(120);
		assertEquals("120", afficheur.getAffichageTempo().getText());
	}

	@Test
	public void testAllumerLED() {
		afficheur.allumerLED(0);
		assertEquals(afficheur.getLEDMesure().getImage(), imageOn);
	}

	@Test
	public void testEteindreLED() {
		afficheur.eteindreLED(0);
		assertEquals(afficheur.getLEDMesure().getImage(), imageOff);
	}

	@Test
	public void testAfficherMesure() {
		afficheur.afficherMesure(4);
		assertEquals("4", afficheur.getAffichageMesure().getText());
	}

	@Test
	public void testEnableButtons() {
		afficheur.enableButtons(true);
		assertEquals(false, afficheur.getStart().isEnabled());
		assertEquals(true, afficheur.getStop().isEnabled());
	}

}
